package domain.controller;

import data_source.DAO.jdbc.FuncionarioDAO;
import java.util.logging.Level;
import java.util.logging.Logger;
import domain.pojo.Funcionario;
import util.DefaultException;

/**
 * Controlador de funcionários
 * @author Owner
 */
public class FuncionarioController {
    FuncionarioDAO modelo = null;
    
    /**
     * Construtor
     */
    public FuncionarioController(){
	modelo = new FuncionarioDAO();
    }
    
    /**
     * Pega quantidade de administradores
     * @return quantidade de administradores
     */
    public int getQuantidadeAdmin(){
	return modelo.getQuantidadeAdmin();
    }
    
    /**
     * Pega quantidade de funcionários
     * @return quantidade de funcionários
     */
    public int getQuantidadeFunc(){
	return modelo.getQuantidadeFunc();
    }
    
    /**
     * Pega dados dos administradores
     * @param quantidade quantidade de administradores
     * @return matriz com informações dos administradores
     */
    public Object[][] getDadosAdmin(int quantidade){
	return modelo.getDadosAdmin(quantidade);
    }
    
    /**
     * Pega dados dos funcionários
     * @param quantidade de funcionários
     * @return matriz com informações dos funcionários
     */
    public Object[][] getDadosFunc(int quantidade){
	return modelo.getDadosFunc(quantidade);
    }
    
    /**
     * Exclui funcionário no banco de dados
     * @param id id do funcionário
     * @throws DefaultException
     */
    public void excluir(int id){
	try {
	    modelo.excluir(id);
	} catch (DefaultException ex) {
	    Logger.getLogger(FuncionarioController.class.getName()).log(Level.SEVERE, null, ex);
	}
    }
    
    /**
     * Atualiza dados do funcionário no banco de dados
     * @param funcionario funcionário a ser atualizado
     * @throws DefaultException
     */
    public void atualizar(Funcionario funcionario){
	try {
	    modelo.atualizar(funcionario);
	} catch (DefaultException ex) {
	    Logger.getLogger(FuncionarioController.class.getName()).log(Level.SEVERE, null, ex);
	}
    }
    
    /**
     * Inclui funcionário no banco de dados
     * @param funcionario
     * @throws DefaultException
     */
    public void incluir(Funcionario funcionario){
	try {
	    modelo.incluir(funcionario);
	} catch (DefaultException ex) {
	    Logger.getLogger(FuncionarioController.class.getName()).log(Level.SEVERE, null, ex);
	}
    }
    
    /**
     * Loga funcionário
     * @param login
     * @param senha
     * @return true se foi bem-sucedido, false se não
     */
    public boolean loginOK(String login, String senha){
	return modelo.logar(login,senha) ? true : false;
    }
}